using System;
using System.Windows.Controls;
using WindowsPhoneMVC.Phone.Interfaces;

namespace WindowsPhoneMVC.Navigation.Interfaces
{
    public interface INavigator
    {
        void Invoke(NavigationRequest request, NavigationDirection direction = NavigationDirection.Forward);
        void InvokeBackground(NavigationRequest navigationRequest);
        void InvokePartial(NavigationRequest navigationRequest, Action<bool, UserControl> loadComplete);

        void InvokeWithResult(NavigationRequest navigationRequest, Action<object> completeCallback);
        void NavigationResult(object result);

        bool NavigateBack();
        void NavigateBackTo(string controllerName, string actionName);

        void RefreshCurrentView();
        void RemoveBackEntry();
        bool CancelNavigation();

        IMvcFrame NavigationFrame { get; }
        string NavigationFrameName { get; }
        event EventHandler NavigationCancelled;


    }
}